import java.util.HashMap;
import java.util.Map;

public class Test {
    public int subarraySum(int[] nums, int k) {
        Map<Integer, Integer> hash=new HashMap<>();
        hash.put(0, 1);
        int ret=0, sum=0;
        for(int x: nums){
            sum+=x;
            ret+=hash.getOrDefault(sum-k, 0);
            hash.put(sum, hash.getOrDefault(sum, 0)+1);
        }
        return ret;
    }



    public int subarraySum1(int[] nums,int k){
        Map<Integer,Integer> hash=new HashMap<>();
        hash.put(0,1);
        int sum=0,ret=0;
        for (int i = 0; i < nums.length; i++) {
            sum+=nums[i];
            ret+=hash.getOrDefault(sum-k,0);
            hash.put(sum,hash.getOrDefault(sum,0)+1);
        }
        return ret;
    }
    public static void main(String[] args) {
        int[] nums=new int[]{1, 1, 1};
        int k=2;
        System.out.println(new Test().subarraySum1(nums, k));
    }
}
